package com.ruoyi.mobile.util;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
import com.ruoyi.mobile.model.vo.QuestionContentVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * Excel相关处理 - Question
 * <p>
 *
 * @author lin
 */
public class ExcelQuestionUtil {

    private static final Logger log = LoggerFactory.getLogger(ExcelQuestionUtil.class);


    /**
     * 对list数据源将其里面的数据导入到excel表单
     *
     * @param type 类型  2 调查问卷 3 体适能测试 4 用户基本资料
     * @param list 导出数据集合
     */
    public void exportExcel(HttpServletResponse response, Integer type, List<QuestionContentVo> list) {
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");

        // 往模板中填充数据
        fillData(response, type, list);
    }

    /**
     * 对list数据源将其里面的数据导入到excel表单
     */
    public void fillData(HttpServletResponse response, Integer type, List<QuestionContentVo> list) {
        // 获得模板文件路径 === 2 调查问卷 3 体适能测试 4 用户基本资料
        String xlsx_file = buildTemplateFilePath(type);
        // 获得调查问卷的字典
        Map<String, Map<String, String>> questionValuesMap = buildQuestionMap();

        Workbook workbook = null;
        try {
            // 获得模板工作簿，解决 04 / 06 版本无法使用同一种工作簿的问题
            try {
                workbook = new XSSFWorkbook(Objects.requireNonNull(this.getClass().getClassLoader().getResourceAsStream(xlsx_file)));
            } catch (OfficeXmlFileException oxfe) {
                workbook = new HSSFWorkbook(Objects.requireNonNull(this.getClass().getClassLoader().getResourceAsStream(xlsx_file)));
            }
            // 读取工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 行对象
            Row row;
            // 单元格对象
            Cell cell;
            // 行下标，初始为 3
            int rowNo = 3;
            // 单元格下标
            int cellNo;
            // 写入数据
            for (QuestionContentVo vo : list) {
                // 读到第四行
                row = sheet.createRow(rowNo++);
                // 设置行高
                row.setHeightInPoints(28);
                // 重置单元格下标 = 1
                cellNo = 1;

                // 设置预设值
                {
                    // 创建 0 位单元格
                    cell = row.createCell(0);
                    // 用户ID 第 0 个单元格
                    cell.setCellValue(vo.getUserId());
                    // 先前置的将用户ID、姓名和电话填入表格
                    switch (type) {
                        case 2:
                        case 3:
                            // 创建 1 位单元格
                            cell = row.createCell(1);
                            // 姓名 第 0 个单元格
                            cell.setCellValue(vo.getName());
                            break;
                        case 4:
                            // 创建 2 位单元格
                            cell = row.createCell(2);
                            // 姓名
                            cell.setCellValue(vo.getName());
                            // 创建 3 位单元格
                            cell = row.createCell(3);
                            // 手机
                            cell.setCellValue(vo.getPhone());
                            break;
                    }
                }

                /*
                 * 相关 quest_x_x 最大值
                 * question====
                 * 0_2  1_5  2_27  3_29  4_56
                 * 姓名 quest_0_1
                 * fitness ====
                 * 1_18
                 * 姓名 quest_1_1
                 * userinfo====
                 * 1_8  2_21  3_4  4_21
                 * 姓名 quest_1_2
                 * 手机 quest_1_3
                 */
                // 判断是否数据库中该用户是否有填写问卷的数据，没有直接下一个用户
                if (vo.getContents().size() > 0) {
                    Map<String, String> values = buildContentMap(vo);
                    switch (type) {
                        case 2:
                            for (int i = 0; i < 5; i++) {
                                int z = i == 0 ? 2 : i == 1 ? 5 : i == 2 ? 27 : i == 3 ? 29 : 56;
                                for (int j = 1; j <= z; j++) {
                                    if (i == 0 && j == 1) {
                                        // quest_0_1 判断值，为空跳过，不为空替换
                                        String v = values.get("quest" + i + "_" + j);
                                        if (StringUtils.isNotBlank(v)) {
                                            cell = row.createCell(cellNo++);
                                            cell.setCellValue(v);
                                        } else {
                                            cellNo++;
                                        }
                                    } else if (i == 2 && j == 2) {
                                        // quest_2_2 不占列，前端没存值
                                        // 无事件
                                    } else if (i == 2 && j == 1) {
                                        // quest_2_1 填入生日，值 = 1 时，取 quest_2_2 为生日结果，值 = 2 / 3 时，取 map 的值
                                        cell = row.createCell(cellNo++);
                                        /*
                                         * 本处前端逻辑
                                         * value = 1: 往 key = age 里塞入生日年月日
                                         * value = 2: 用户选择了 不知道/不确定
                                         * value = 3: 往 key = quest1_3 塞入用户输入的年龄
                                         */
                                        if ("1".equals(values.get("quest" + i + "_" + j))) {
                                            cell.setCellValue(values.get("age"));
                                        } else if ("2".equals(values.get("quest" + i + "_" + j))) {
                                            cell.setCellValue("不知道/不确定");
                                        } else {
                                            cell.setCellValue("拒绝回答");
                                        }
                                    } else {
                                        cell = row.createCell(cellNo++);
                                        String key = "quest" + i + "_" + j;
                                        String value = values.get(key);
                                        if (questionValuesMap.containsKey(key)) {
                                            if (i == 4 && (j == 1 || j == 3 || j == 5)) {
                                                // quest_4_1_1 ：当 quest_4_1 去掉的值为 0 时，取当前值替换 quest_4_1（ quest_4_3、quest_4_5 同理 ）
                                                if ("0".equals(values.get(key))) {
                                                    value = "每周" + values.get("quest" + i + "_" + j + "_1") + "天";
                                                } else {
                                                    value = questionValuesMap.get(key).get(values.get(key));
                                                }
                                            } else if (i == 4 && (j == 2 || j == 4 || j == 6)) {
                                                // quest_4_2_1/2 ：当 quest_4_2 去掉的值为 0 时，取当前值替换 quest_4_2（ quest_4_4、quest_4_6 同理 ）
                                                if ("0".equals(values.get(key))) {
                                                    value = values.get("quest" + i + "_" + j + "_1") + "小时" + values.get("quest" + i + "_" + j + "_2") + "分钟";
                                                } else {
                                                    value = questionValuesMap.get(key).get(values.get(key));
                                                }
                                            } else {
                                                value = questionValuesMap.get(key).get(values.get(key));
                                            }
                                        }
                                        cell.setCellValue(value);
                                    }
                                }
                            }
                            break;
                        case 3:
                            for (int i = 1; i <= 18; i++) {
                                if (i == 1) {
                                    // quest_1_1 判断值，为空跳过，不为空替换
                                    String v = values.get("quest1_" + i);
                                    if (StringUtils.isNotBlank(v)) {
                                        cell = row.createCell(cellNo++);
                                        cell.setCellValue(v);
                                    } else {
                                        cellNo++;
                                    }
                                    continue;
                                }
                                cell = row.createCell(cellNo++);
                                cell.setCellValue(values.get("quest1_" + i));
                            }
                            break;
                        case 4:
                            for (int i = 1; i < 5; i++) {
                                int z = i == 1 ? 8 : i == 3 ? 4 : 21;
                                for (int j = 1; j <= z; j++) {
                                    if (i == 1 && (j == 2 || j == 3)) {
                                        // quest_0_1 判断值，为空跳过，不为空替换
                                        String v = values.get("quest" + i + "_" + j);
                                        if (StringUtils.isNotBlank(v)) {
                                            cell = row.createCell(cellNo++);
                                            cell.setCellValue(v);
                                        } else {
                                            cellNo++;
                                        }
                                        continue;
                                    }
                                    cell = row.createCell(cellNo++);
                                    cell.setCellValue(values.get("quest" + i + "_" + j));
                                }
                            }
                            break;
                    }
                }
            }

            workbook.write(response.getOutputStream());
        } catch (Exception e) {
            log.error("导出Excel异常{}", e.getMessage());
        } finally {
            IOUtils.closeQuietly(workbook);
        }
    }

    /**
     * 获得模板文件路径
     *
     * @param type 2 调查问卷 3 体适能测试 4 用户基本资料
     * @return 文件位置
     */
    private String buildTemplateFilePath(Integer type) {
        String xlsx_file = null;
        switch (type) {
            case 2:
                xlsx_file = "excel/question.xlsx";
                break;
            case 3:
                xlsx_file = "excel/fitness.xlsx";
                break;
            case 4:
                xlsx_file = "excel/userinfo.xlsx";
                break;
        }
        return xlsx_file;
    }

    /**
     * 将数据库查回的数据进行处理，返回组装 excel 的数据
     *
     * @param vo 单个用户数据
     * @return map
     */
    private Map<String, String> buildContentMap(QuestionContentVo vo) {
        Map<String, String> values = new HashMap<>();
        vo.getContents().forEach(tmp -> values.putAll(JSON.parseObject(tmp, new TypeReference<HashMap<String, String>>() {
        })));
        return values;
    }

    /**
     * 组装 调查问卷 的字典
     *
     * @return { "quest1_x": { "值": "值的解释" } }
     */
    private Map<String, Map<String, String>> buildQuestionMap() {
        Map<String, Map<String, String>> valuesMap = buildAdjustMap();
        valuesMap.putAll(buildBehaviorMap());
        valuesMap.putAll(buildTestMap());
        valuesMap.putAll(buildBodyStrengthMap());
        return valuesMap;
    }

    /**
     * 组装 调查问卷 - 体育活动适应能力问卷 的字典
     *
     * @return { "quest1_x": { "值": "值的解释" } }
     */
    private Map<String, Map<String, String>> buildAdjustMap() {
        Map<String, Map<String, String>> valuesMap = new HashMap<>();
        Map<String, String> tmp_1 = new HashMap<>();
        tmp_1.put("1", "是");
        tmp_1.put("2", "否");
        valuesMap.put("quest1_1", tmp_1);
        valuesMap.put("quest1_2", tmp_1);
        valuesMap.put("quest1_3", tmp_1);
        valuesMap.put("quest1_4", tmp_1);
        valuesMap.put("quest1_5", tmp_1);
        return valuesMap;
    }

    /**
     * 组装 调查问卷 - 健康行为问卷调查 的字典
     *
     * @return { "quest2_x": { "值": "值的解释" } }
     */
    private Map<String, Map<String, String>> buildBehaviorMap() {
        Map<String, Map<String, String>> valuesMap = new HashMap<>();
        Map<String, String> tmp_1 = new HashMap<>();
        tmp_1.put("1", "理论上会回写到 quest2_2");
        tmp_1.put("2", "不知道/不确定");
        tmp_1.put("3", "拒绝回答，填入年龄");
        valuesMap.put("quest2_1", tmp_1);
        Map<String, String> tmp_2 = new HashMap<>();
        tmp_2.put("0", "从没去过学校");
        tmp_2.put("1", "小学");
        tmp_2.put("2", "初中");
        tmp_2.put("3", "高中");
        tmp_2.put("4", "高职/大专");
        tmp_2.put("5", "本科");
        tmp_2.put("6", "研究生");
        tmp_2.put("7", "不知道");
        tmp_2.put("8", "拒绝回答");
        valuesMap.put("quest2_4", tmp_2);
        Map<String, String> tmp_3 = new HashMap<>();
        tmp_3.put("1", "医保卡");
        tmp_3.put("2", "没有医疗保险");
        valuesMap.put("quest2_5", tmp_3);
        Map<String, String> tmp_4 = new HashMap<>();
        tmp_4.put("0", "0");
        tmp_4.put("1", "I");
        tmp_4.put("2", "II");
        tmp_4.put("3", "III");
        valuesMap.put("quest2_6", tmp_4);
        Map<String, String> tmp_5 = new HashMap<>();
        tmp_5.put("0", "手术");
        tmp_5.put("1", "手术＋放射性治疗");
        tmp_5.put("2", "手术＋化疗");
        tmp_5.put("3", "手术＋放射性治疗＋化疗");
        valuesMap.put("quest2_7", tmp_5);
        Map<String, String> tmp_6 = new HashMap<>();
        tmp_6.put("0", "小于 12 个月");
        tmp_6.put("1", "13-24 个月");
        tmp_6.put("2", "25-36 个月");
        tmp_6.put("3", "37-48 个月");
        tmp_6.put("4", "49-60 个月");
        tmp_6.put("5", "大于 60 个月");
        valuesMap.put("quest2_8", tmp_6);
        Map<String, String> tmp_7 = new HashMap<>();
        tmp_7.put("0", "是的");
        tmp_7.put("1", "没有");
        valuesMap.put("quest2_9", tmp_7);
        valuesMap.put("quest2_13", tmp_7);
        Map<String, String> tmp_8 = new HashMap<>();
        tmp_8.put("0", "没有");
        tmp_8.put("1", "有过一种病理症状");
        tmp_8.put("2", "有过至少两种病理症状");
        valuesMap.put("quest2_10", tmp_8);
        Map<String, String> tmp_9 = new HashMap<>();
        tmp_9.put("0", "主治医生 （家庭医生）");
        tmp_9.put("1", "肿瘤内科或 血液病学专家");
        tmp_9.put("2", "放射肿瘤学家");
        tmp_9.put("3", "妇科医生");
        tmp_9.put("4", "乳腺外科医生");
        tmp_9.put("5", "我不知道我的癌症医生的专长");
        tmp_9.put("6", "其他");
        tmp_9.put("7", "不知道／不确定");
        tmp_9.put("8", "拒绝回答");
        valuesMap.put("quest2_14", tmp_9);
        Map<String, String> tmp_0 = new HashMap<>();
        tmp_0.put("0", "每3－6个月一次");
        tmp_0.put("1", "每6－12个月一次");
        tmp_0.put("2", "一年一次");
        tmp_0.put("3", "从来没有");
        tmp_0.put("4", "其他");
        tmp_0.put("5", "不知道／不确定");
        tmp_0.put("6", "拒绝回答");
        valuesMap.put("quest2_16", tmp_0);
        Map<String, String> tmp_10 = new HashMap<>();
        tmp_10.put("0", "每6个月一次");
        tmp_10.put("1", "每12个月一次");
        tmp_10.put("2", "每1－2年一次");
        tmp_10.put("3", "每2年一次");
        tmp_10.put("4", "从来没有进行过乳房 X 光检查在完成胸部切除手术， 化疗和放射性治疗后");
        tmp_10.put("5", "胸部切除之后，进行过 MRI");
        tmp_10.put("6", "化疗和放射性治疗后");
        tmp_10.put("7", "其他");
        tmp_10.put("8", "不知道／不确定");
        tmp_10.put("9", "拒绝回答");
        valuesMap.put("quest2_18", tmp_10);
        Map<String, String> tmp_11 = new HashMap<>();
        tmp_11.put("0", "每6个月一次");
        tmp_11.put("1", "每12个月一次");
        tmp_11.put("2", "每1－2年一次");
        tmp_11.put("3", "每2年一次");
        tmp_11.put("4", "从来没有进行过 MRI 检查在完成胸部切除手术， 化疗和放射性治疗后");
        tmp_11.put("5", "其他");
        tmp_11.put("6", "不知道／不确定");
        tmp_11.put("7", "拒绝回答");
        valuesMap.put("quest2_20", tmp_11);
        Map<String, String> tmp_12 = new HashMap<>();
        tmp_12.put("0", "小于 6 个月以前");
        tmp_12.put("1", "6 个月到 1 年之前");
        tmp_12.put("2", "1 到 2 年之前");
        tmp_12.put("3", "大于 2 年之前");
        tmp_12.put("4", "从来没有进行过乳房 X 光检查在完成胸部切除手术， 化疗和放射性治疗后");
        tmp_12.put("5", "不知道／不确定");
        tmp_12.put("6", "拒绝回答［跳到问题 18］");
        valuesMap.put("quest2_22", tmp_12);
        Map<String, String> tmp_13 = new HashMap<>();
        tmp_13.put("0", "有肿块");
        tmp_13.put("1", "具体的乳房问题");
        tmp_13.put("2", "常规检查");
        tmp_13.put("3", "不知道／不确定");
        tmp_13.put("4", "拒绝回答");
        valuesMap.put("quest2_23", tmp_13);
        Map<String, String> tmp_14 = new HashMap<>();
        tmp_14.put("0", "已婚");
        tmp_14.put("1", "分居／离异");
        tmp_14.put("2", "丧偶");
        tmp_14.put("3", "单身， 还没结过婚");
        tmp_14.put("4", "与未婚伴侣同居");
        tmp_14.put("5", "不知道／不确定");
        tmp_14.put("6", "拒绝回答");
        valuesMap.put("quest2_24", tmp_14);
        Map<String, String> tmp_15 = new HashMap<>();
        tmp_15.put("0", "全职 （工作时间大于 35 小时／每周；包括在家的工作时间）");
        tmp_15.put("1", "兼职 （工作时间小于等于 35 个小时／每周；包括在家的工作时间）");
        tmp_15.put("2", "退休");
        tmp_15.put("3", "失业／残疾");
        tmp_15.put("4", "家庭主妇");
        tmp_15.put("5", "其他");
        tmp_15.put("6", "不知道／不确定");
        tmp_15.put("7", "拒绝回答");
        valuesMap.put("quest2_25", tmp_15);
        Map<String, String> tmp_16 = new HashMap<>();
        tmp_16.put("0", "没有收入");
        tmp_16.put("1", "少于 32，500 人民币");
        tmp_16.put("2", "32,500－ 65，000 人民币");
        tmp_16.put("3", "65，001－130，000 万人民币之间");
        tmp_16.put("4", "130,001－260，000 万人民币之间");
        tmp_16.put("5", "不知道／不确定");
        tmp_16.put("6", "拒绝回答");
        valuesMap.put("quest2_27", tmp_16);
        return valuesMap;
    }

    /**
     * 组装 调查问卷 - 病人报告结果测量信息系统 的字典
     *
     * @return { "quest3_x": { "值": "值的解释" } }
     */
    private Map<String, Map<String, String>> buildTestMap() {
        Map<String, Map<String, String>> valuesMap = new HashMap<>();
        Map<String, String> tmp_1 = new HashMap<>();
        tmp_1.put("0", "没有任何问题");
        tmp_1.put("1", "有一点问题");
        tmp_1.put("2", "有一些问题");
        tmp_1.put("3", "有很大困难");
        tmp_1.put("4", "无法做到");
        valuesMap.put("quest3_1", tmp_1);
        valuesMap.put("quest3_2", tmp_1);
        valuesMap.put("quest3_3", tmp_1);
        valuesMap.put("quest3_4", tmp_1);
        Map<String, String> tmp_2 = new HashMap<>();
        tmp_2.put("0", "没有");
        tmp_2.put("1", "很少");
        tmp_2.put("2", "有点");
        tmp_2.put("3", "经常");
        tmp_2.put("4", "总是");
        valuesMap.put("quest3_5", tmp_2);
        valuesMap.put("quest3_6", tmp_2);
        valuesMap.put("quest3_7", tmp_2);
        valuesMap.put("quest3_8", tmp_2);
        valuesMap.put("quest3_9", tmp_2);
        valuesMap.put("quest3_10", tmp_2);
        valuesMap.put("quest3_11", tmp_2);
        valuesMap.put("quest3_12", tmp_2);
        valuesMap.put("quest3_21", tmp_2);
        valuesMap.put("quest3_22", tmp_2);
        valuesMap.put("quest3_23", tmp_2);
        valuesMap.put("quest3_24", tmp_2);
        Map<String, String> tmp_3 = new HashMap<>();
        tmp_3.put("0", "一点儿也不");
        tmp_3.put("1", "有一点儿");
        tmp_3.put("2", "有点");
        tmp_3.put("3", "颇有几分");
        tmp_3.put("4", "非常多");
        valuesMap.put("quest3_13", tmp_3);
        valuesMap.put("quest3_14", tmp_3);
        valuesMap.put("quest3_15", tmp_3);
        valuesMap.put("quest3_16", tmp_3);
        valuesMap.put("quest3_25", tmp_3);
        valuesMap.put("quest3_26", tmp_3);
        valuesMap.put("quest3_27", tmp_3);
        valuesMap.put("quest3_28", tmp_3);
        Map<String, String> tmp_4 = new HashMap<>();
        tmp_4.put("0", "非常弱");
        tmp_4.put("1", "弱");
        tmp_4.put("2", "一般");
        tmp_4.put("3", "很好");
        tmp_4.put("4", "非常好");
        valuesMap.put("quest3_17", tmp_4);
        valuesMap.put("quest3_18", tmp_4);
        valuesMap.put("quest3_19", tmp_4);
        valuesMap.put("quest3_20", tmp_4);
        return valuesMap;
    }

    /**
     * 组装 调查问卷 - 体力活动测量 的字典
     *
     * @return { "quest4_x": { "值": "值的解释" } }
     */
    private Map<String, Map<String, String>> buildBodyStrengthMap() {
        Map<String, Map<String, String>> valuesMap = new HashMap<>();
        Map<String, String> tmp_1 = new HashMap<>();
        tmp_1.put("1", "没有");
        tmp_1.put("2", "不知道/不确定");
        tmp_1.put("3", "拒绝回答");
        valuesMap.put("quest4_1", tmp_1);
        valuesMap.put("quest4_2", tmp_1);
        valuesMap.put("quest4_3", tmp_1);
        valuesMap.put("quest4_4", tmp_1);
        valuesMap.put("quest4_5", tmp_1);
        valuesMap.put("quest4_6", tmp_1);
        Map<String, String> tmp_2 = new HashMap<>();
        tmp_2.put("0", "Zero 0");
        tmp_2.put("1", "One 1");
        tmp_2.put("2", "Two 2");
        tmp_2.put("3", "Three 3");
        tmp_2.put("4", "Four 4");
        tmp_2.put("5", "Five 5");
        tmp_2.put("6", "Six or more 6");
        valuesMap.put("quest4_7", tmp_2);
        Map<String, String> tmp_3 = new HashMap<>();
        tmp_3.put("0", "至少6个月");
        tmp_3.put("1", "6个月或以上");
        valuesMap.put("quest4_8", tmp_3);
        Map<String, String> tmp_4 = new HashMap<>();
        tmp_4.put("0", "不，我不会有这样的计划");
        tmp_4.put("1", "是的，将在未来的6个月中有这样的计划");
        tmp_4.put("2", "是的，将在未来的30天中有这个的计划");
        valuesMap.put("quest4_9", tmp_4);
        Map<String, String> tmp_5 = new HashMap<>();
        tmp_5.put("0", "从来没有");
        tmp_5.put("1", "几乎没有");
        tmp_5.put("2", "有时");
        tmp_5.put("3", "经常");
        tmp_5.put("4", "多次");
        valuesMap.put("quest4_10", tmp_5);
        valuesMap.put("quest4_11", tmp_5);
        valuesMap.put("quest4_12", tmp_5);
        valuesMap.put("quest4_13", tmp_5);
        valuesMap.put("quest4_14", tmp_5);
        valuesMap.put("quest4_15", tmp_5);
        valuesMap.put("quest4_16", tmp_5);
        valuesMap.put("quest4_17", tmp_5);
        valuesMap.put("quest4_18", tmp_5);
        valuesMap.put("quest4_19", tmp_5);
        valuesMap.put("quest4_20", tmp_5);
        valuesMap.put("quest4_21", tmp_5);
        valuesMap.put("quest4_22", tmp_5);
        valuesMap.put("quest4_23", tmp_5);
        valuesMap.put("quest4_24", tmp_5);
        Map<String, String> tmp_6 = new HashMap<>();
        tmp_6.put("0", "不重要");
        tmp_6.put("1", "有点重要");
        tmp_6.put("2", "重要");
        tmp_6.put("3", "很重要");
        tmp_6.put("4", "非常重要");
        valuesMap.put("quest4_25", tmp_6);
        valuesMap.put("quest4_26", tmp_6);
        valuesMap.put("quest4_27", tmp_6);
        valuesMap.put("quest4_28", tmp_6);
        valuesMap.put("quest4_29", tmp_6);
        valuesMap.put("quest4_30", tmp_6);
        valuesMap.put("quest4_31", tmp_6);
        valuesMap.put("quest4_32", tmp_6);
        valuesMap.put("quest4_33", tmp_6);
        valuesMap.put("quest4_34", tmp_6);
        Map<String, String> tmp_7 = new HashMap<>();
        tmp_7.put("0", "我确定不会");
        tmp_7.put("1", "我可能不会");
        tmp_7.put("2", "中立");
        tmp_7.put("3", "我可能会");
        tmp_7.put("4", "我确定我会");
        valuesMap.put("quest4_35", tmp_7);
        valuesMap.put("quest4_36", tmp_7);
        valuesMap.put("quest4_37", tmp_7);
        valuesMap.put("quest4_38", tmp_7);
        valuesMap.put("quest4_39", tmp_7);
        valuesMap.put("quest4_40", tmp_7);
        Map<String, String> tmp_8 = new HashMap<>();
        tmp_8.put("0", "从不");
        tmp_8.put("1", "1-2 天");
        tmp_8.put("2", "3-4 天");
        tmp_8.put("3", "5-6 天");
        tmp_8.put("4", "每天");
        valuesMap.put("quest4_41", tmp_8);
        valuesMap.put("quest4_42", tmp_8);
        valuesMap.put("quest4_43", tmp_8);
        valuesMap.put("quest4_44", tmp_8);
        valuesMap.put("quest4_45", tmp_8);
        valuesMap.put("quest4_46", tmp_8);
        valuesMap.put("quest4_47", tmp_8);
        valuesMap.put("quest4_48", tmp_8);
        valuesMap.put("quest4_49", tmp_8);
        Map<String, String> tmp_9 = new HashMap<>();
        tmp_9.put("0", "0 朋友");
        tmp_9.put("1", "1 朋友");
        tmp_9.put("2", "2 朋友");
        tmp_9.put("3", "3 朋友");
        tmp_9.put("4", "4 朋友");
        tmp_9.put("5", "5 朋友");
        valuesMap.put("quest4_50", tmp_9);
        Map<String, String> tmp_0 = new HashMap<>();
        tmp_0.put("0", "强烈不同意");
        tmp_0.put("1", "有点不同意");
        tmp_0.put("2", "中立");
        tmp_0.put("3", "有点同意");
        tmp_0.put("4", "强烈同意");
        valuesMap.put("quest4_51", tmp_0);
        valuesMap.put("quest4_53", tmp_0);
        valuesMap.put("quest4_54", tmp_0);
        valuesMap.put("quest4_55", tmp_0);
        valuesMap.put("quest4_56", tmp_0);
        Map<String, String> tmp_10 = new HashMap<>();
        tmp_10.put("0", "几乎总是选择看电视，阅读，听音乐，或是上网等一系列活动");
        tmp_10.put("1", "经常选择看电视，阅读，听音乐，或是上网等一系列活动");
        tmp_10.put("2", "很可能选择积极或者不活跃的娱乐活动");
        tmp_10.put("3", "经常选择像骑自行车，跳舞，户外游戏或是剧烈的运动和活动");
        tmp_10.put("4", "几乎总是选择像骑自行车，跳舞，户外游戏或是剧烈的运动和活动");
        valuesMap.put("quest4_52", tmp_10);
        return valuesMap;
    }
}
